%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % 												test mls										%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % 
 % Look at the cross-correlation in MATLAB/Octave to verify MLS properties
 % 
 % Copyright (c) 2014, Aaron L. Jones
 % All rights reserved.
 % 
 % Redistribution and use in source and binary forms, with or without modification, are permitted 
 % provided that the following conditions are met:
 % 
 % 1. Redistributions of source code must retain the above copyright notice, this list of 
 % conditions and the following disclaimer in the documentation and/or other materials 
 % provided with the distribution.
 % 
 % 2. Redistributions in binary form must reproduce the above copyright notice, this list of 
 % conditions and the following disclaimer in the documentation and/or other materials provided 
 % with the distribution.
 % 
 % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 % EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 % MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
 % THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 % SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
 % OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
 % HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
 % TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
 % SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 %
%%%

[mls fs nbits] = wavread('mls0.wav');

% zero-pad to prevent circular convolution
mls = [ zeros(size(mls)) ; mls ; zeros(size(mls)) ];

len = max(size(mls));

% hann window
w = (1 - cos(2*pi*(0:len-1)/len))/2;

MLS = fft(mls);

% perform efficient cross-correlation in the frequency domain 
xMLS = MLS.*conj(MLS);

xmls = real(ifft(xMLS));

figure(2)
plot(xmls)
